package com.roy.bloom;

import java.nio.charset.StandardCharsets;

import com.google.common.hash.BloomFilter;
import com.google.common.hash.Funnels;
/**
 * 单机版BloomFilter。Guava中自有的实现方式。
 * @author roykingw 2019年8月6日
 *
 */
public class LocalBloomDemo {

	public static void main(String[] args) {
		BloomFilter<String> filter = BloomFilter.create(
				Funnels.stringFunnel(StandardCharsets.UTF_8),//主要是预估数据类型 
				100000, //预估数据量
				0.1);//错误率
		for(int i = 0 ; i < 100000 ; i ++) {
			filter.put(""+i);
		}
		System.out.println(filter.toString());
		//mightContain：可能存在。
		// 集合中已有的记录，肯定会返回true
		// 集合里没有的记录，有一定错误率会返回ture。错误率基本符合预设值。
		// 如果记录返回的结果是false，那该记录肯定不在集合里。
		for(int j = 99990; j < 100010 ; j ++) {
//			System.out.println(j+":"+filter.test(""+j));
			System.out.println(j+":"+filter.mightContain(""+j));
		}
	}
}
